﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WBAssistant.BLL._SettingsManager
{
    /// <summary>
    /// Classe qui instancieras la bonne classe de gestion des paramètres
    /// </summary>
    public static class SettingsFactory
    {
        /// <summary>
        /// Loads the settings.
        /// </summary>
        /// <param name="settings">The settings.</param>
        /// <returns></returns>
        /// <exception cref="SettingsExeption"></exception>
        internal static Settings LoadSettings(string settings) 
        {
            Settings result = null;

                // Si on veux les paramètre de l'application
            if (settings == "application")
            {
                //On instancie la classe qui vas gerer les paramètres de l'application
                result = AppSettings.GetInstance();
            }
                //Si on veux les paramètres d'un plugin
            else if (settings == "plugins-setting")
            {
                //On instancie la classe qui vas gerer les paramètres des plugins de l'application
                result = PluginSettings.GetInstance();
            }
                //Si on veux les paramètres d'un plugin qui doivent êtres chargé
            else if (settings == "plugins-loaded")
            {
                //On instancie la classe qui vas gerer les paramètres des plugins qui sont chargé par l'application
                result = LoadedPluginSettings.GetInstance();
            }
            else
            {
                // Message qui seras transmis par l'exeption
                const string message = "Nous ne pouvons pas charger les paramètres demandés !";
                // On lève une Exception de type SettingsExeption
                throw new SettingsExeption(message);
            }

            //On retroune notre instance de paramètre
            return result;
        }
    }
}
